![]() ![]() |
I/O Kit 電源コントローラ:クィックルックI/O Kit の電源コントローラは、通常、ドライバ (KEXT) 経由で、I/O デバイスへの電圧 (Vcc ) と電流 (i) を制御する実体です。 KEXT を電源コントローラにするには、次のことを実施する必要があります。 電源状態の配列を作成します。この配列は、電源関連のパラメータ、すなわち電流上昇とセトリングタイム、定常状態電流などの要件を定義します。 KEXT を I/O Kit に登録します。このステップで、デバイスは I/O レジストリの IOPower プレーンに置かれます。 プロバイダの setPowerState メソッドをオーバーライドします。setPowerState メソッドは、電源オンと電源オフのメッセージを受け取ります。KEXT は、KEXT で必要とされることがある状態情報を含め、デバイスとの電源の切断と復旧に必要な処理を実行しなければなりません。 以下に、これら 3 つのステップについて詳しく説明します。 電源状態の配列Developer SDK に含まれている電源状態の配列は、次のパスにあります。 /System/Library/Frameworks/Kernel.framework/Versions/A/Headers/IOKit/pwr_mgt/IOPMpowerState.h リスト 1 に示すサンプルには、「オン」と「オフ」の 2 つの状態の電源状態配列があります。2 つの状態からなる配列(オン/オフ)は、一般的であり、電源管理コードを KEXT に追加する簡単な方法となります。詳細については、「I/O Kit Fundamentals」の 10 章と、「ダウンロード」で紹介している HelloIOKitWithPowerManagement プロジェクトのヘッダファイルを参照してください。 詳細については、最後に挙げるプロジェクトのヘッダファイルと、「I/O Kit Fundamentals」の 10 章を参照してください。 これで最初のステップは終了です。次に、電源状態の配列を登録する必要があります。
登録処理電源管理の登録処理を完了するには、リスト 2 に示すように、3 つの関数を呼び出す必要があります。 まず、PMinit を呼び出して、電源管理インスタンス変数の割り当てと初期化を行います。必ず、PMinit を呼び出してから、これらの変数や電源管理メソッドにアクセスする必要があります。 次に、デバイスを自発的に制御する親クラスメソッドの registerPowerDriver を呼び出し、成功したかどうかを忘れずに確認します。 最後に、親クラスメソッドを呼び出して、I/O レジストリの IOPower プレーンを結びつける必要があります。
電源イベントへの応答最後のステップでは、IOService である親の setPowerState メソッドを実装(オーバーライド)します。ドライバは、デバイスの電力を上げたり下げたりする方法を理解している唯一の実体です。リスト 3 に示す宣言をヘッダファイルに置きます。
本稿では、この程度の実装で十分です。「I/O Kit Fundamentals」の 10 章で、この実装について詳しく知ることができます。 しかし、アップルメニューを使ってコンピュータをスリープ状態にする場合は、この実装は IOLog にエントリを記録します。
必要なのは、単純なオン/オフ式の省電力ドライバを持つことだけです。これらの 3 つのステップは、完全な I/O Kit KEXT にあるので、見てみましょう。 プロジェクト最後に挙げる Project Builder プロジェクトは、Hello I/O Kit tutorial からの引用です。 アップルでの開発に慣れていない方は、このチュートリアルから始めてもよいでしょう。そうでない方は、プロジェクトを単にダウンロードしてください。このプロジェクトには、上で解説した電源管理の 3 つのステップが含まれており、いつでも実行できるようになっています。KEXT を「Extensions」フォルダにロードする方法を知っている必要があります。わからない場合は、チュートリアルの「Test the Device Driver」のセクションを参照してください。 その他のソース最後に、時間があれば、次のソースから電源管理に関する追加情報を入手できます。 Power Manager DDK には、サンプルやツールなどが含まれています。 「I/O Kit Fundamentals」の 10 章「電源とデバイス取り外し管理」にも最新情報があります。 関連するテクニカルノート TN 2075「PowerManagement for Macintosh; getting started」では、さまざまな電源管理データに対するすべてのリンクを説明しています。 みなさまの開発が成功されることをお祈りしております。DTS Engineering ダウンロード
|